Linux 文件实时备份 rsync+lsyncd | 您所在的位置:网站首页 › 服务器备份软件 linux › Linux 文件实时备份 rsync+lsyncd |
一、原理和说明
lsyncd官网 (一)软件说明目的是每次只把新修改的同步,而不是全量备份。 Rsync(同步):将一个服务器的一个文件夹的内容提交到另外一个服务器的文件夹 lsyncd(差异检测并调用rsync):把差异的找出来,然后运行脚本 另外,linux桌面端也可以这样使用,如果linux作为工作机,可以实时备份文件 (二)本方法说明采用的是推送模式,即需要备份文件的服务器(客户端)向备份服务器(服务端)推送 客户端:客户端的文件需要被备份 服务端:接收客户端的文件并保存的 (三)演示说明以下的演示中,两台设备信息如下 注意,下面的备份目录根据自己情况调整 客户端(文件需要被备份) 局域网ip:192.168.0.188 系统:debian11 备份文件夹:/aaa服务端(存放备份文件的) 局域网ip:192.168.0.199 系统:debian11 备份文件夹:/cloud/bf_1 (四)其它说明需要先开放对应端口,默认是873。另外注意selinux,如果搞不定就关了selinx 二、服务端配置(接收备份文件的)服务端只需要安装rsync 1.安装rsync apt-get install rsync 2.创建接收备份后保存的目录目录不要直接抄 mkdir /cloud/bf_1 mkdir /cloud/bf_2 3.创建同步的账号密码使用下面的命令直接写入,也可以vi打开后编辑 echo "rsync_backup:123456" >/etc/rsync.password && chmod 600 /etc/rsync.password账号为:rsync_backup 密码为:123456 4.配置rsync vi /etc/rsyncd.conf内容如下 uid = root # linux的用户 gid = root # linux的用户组 use chroot = yes max connections = 1024 timeout = 600 port=873 # 指定rsync端口。默认873 [backup] #备份的项目模块,如果有多个,也是这样设置 path = /cloud/bf_1/ # 备份保存的位置 read only = no secrets file =/etc/rsync.password auth users = rsync_backup list = no pid file =/var/run/rsyncd.pid lock file =/var/run/rsync.lock log file = /var/log/rsyncd.log ignore errors = yes hosts allow = 192.168.0.188 #如果允许所有的IP,则使用* 5.测试并开机启动 systemctl daemon-reload && systemctl start rsync systemctl status rsync开机启动 systemctl enable rsync 三、客户端配置(文件需要被备份的)需要安装rsync和sersync (一)安装配置rsync 1.包安装 apt-get install rsync 2.配置 vi /etc/rsyncd.conf内容如下 uid = root gid = root use chroot = no max connections = 3600 pid file =/var/run/rsyncd.pid lock file =/var/run/rsync.lock log file = /var/log/rsyncd.log保存后退出 3.创建访问服务端的密码(服务端那也设置过一次,这里相同,但是没有前面的账户名了) echo "123456" >/etc/rsync.password && chmod 600 /etc/rsync.password 4.调整系统配置 echo 81920 >/proc/sys/fs/inotify/max_user_watches echo 327678 >/proc/sys/fs/inotify/max_queued_events 5.测试(可以省略,这个是手动的命令)如果有初始文件,手动运行一下建立初始文件 将/aaa目录下的文件保存到192.168.0.199,用rsync_backup账户登录,存到模块为backup的地方 rsync -avzP /aaa/ [email protected]::backup --password-file=/etc/rsync.password如果测试成功,说明rsync已经配置好了,可以手动备份了。 6.启动并开机启动或者关掉注意,如果不是为了双向同步,客户端的这个rsync可以关掉,我这里还是设置开启。 但是不能不安装rsync,因为lsyncd也要调用rsync命令 systemctl daemon-reload && systemctl restart rsync && systemctl enable rsync如果要关掉 systemctl daemon-reload systemctl stop rsync && systemctl disable rsync (二)安装配置lsyncd封装了inotify-tools,所以无需再安装 1.安装lsyncd apt-get -y install lsyncd 2.配置文件 mkdir /etc/lsyncd vi /etc/lsyncd/lsyncd.conf内容如下 settings { logfile = "/var/log/lsyncd/lsyncd.log", statusFile = "/var/log/lsyncd/lsyncd.status", insist = true, statusInterval = 10 } sync { default.rsync, source="/aaa", target="[email protected]::backup", rsync = { binary = "/usr/bin/rsync", archive = true, compress = true, verbose = true, --delete = true, _extra = {"--password-file=/etc/rsync.password"} } }创建日志文件 mkdir /var/log/lsyncd vi /var/log/lsyncd/lsyncd.log直接空白保存退出,防止程序没有权限无法新建文件 3.修改启动脚本文件通过脚本执行状态查询具体位置(可能不同系统不一样,但是这种方法肯定能找到) systemctl status lsyncd装好后是这里 vi /etc/init.d/lsyncd找到并修改这一行为上面配置的文件的地址,修改如下,保存退出 4.测试启动刷新systemctl脚本并重新启动 systemctl daemon-reload && systemctl restart lsyncd注意:只有在该运行之后的改动文件才会自动备份,如果有初始文件,手动同步一次即可 此时正常运行,注意:文件同步会有几秒的延迟,这也是避免不必要的资源浪费 四、其它说明 (一)一个服务端,多个客户端服务器怎么配置服务端无需多个实例,只需要在配置文件 vi /etc/rsyncd.conf最后添加形如如下的内容(里面的目录只是演示),保存后重启服务即可 [backup] path = /cloud/edp_bf/ read only = no secrets file =/etc/rsync.password auth users = rsync_backup list = no pid file =/var/run/rsyncd.pid lock file =/var/run/rsync.lock log file = /var/log/rsyncd.log ignore errors = no hosts allow = 192.168.0.188 [doc] path = /var/www read only = no secrets file =/etc/rsync.password auth users = rsync_backup list = no pid file =/var/run/rsyncd.pid lock file =/var/run/rsync.lock log file = /var/log/rsyncd.log ignore errors = no hosts allow = 192.168.0.166 systemctl restart rsync客户端的配置和上面的一致,这里不再多写一遍了,注意模块名称(就是上面的[ ]中的名称) (二)客户端或服务端掉线如果服务端掉线,客户端会不断访问并记录错误日志,注意排查问题 (三)报错如果报错,在服务端 systemctl status rsync查看具体的报错内容,这里是详细内容,然后复制错误代码查询即可 1.rsync error: error starting client-server protocol (code 5) at main.c [sender=3.1.2]服务端需要添加客户端的ip白名单。 在服务端 vi /etc/rsyncd.conf在“hosts allow =”这里加上客户端ip ,然后重启软件接口 systemctl restart rsync (四)定期清理日志使用linux系统自带的logrotate日志管理 vi /etc/logrotate.d/lsyncd写入以下内容 /var/log/lsyncd/lsyncd.log { daily rotate 3 compress delaycompress missingok notifempty create 640 root root postrotate /usr/bin/systemctl restart lsyncd.service endscript }保存退出即可,这个会自动运行 也可以手动测试有无问题 logrotate -d /etc/logrotate.d/lsyncd |
CopyRight 2018-2019 实验室设备网 版权所有 |